/*
 * MIXMAIN.C Version 1.01 (C)1996 HUDSON SOFT
 * MIX 再生サンプルプログラムメイン(MIXMAIN.C)
 */
#include <stdio.h>
#include <stdlib.h>
#include <dir.h>
#include "mixplay.h"

char *load_file = "mixplay.bin";
int debug_flag = FALSE;
int eml_status = EM_OK;
static char load_name[MAXPATH];

/* パラメータのチェック
 *
 * 入力：
 * int		    argc   コマンドラインの引数の個数
 * char		    **argv コマンドラインの引数リスト
 *
 * 出力：
 * なし
 */
void arg_check(int argc,char **argv)
{
    char mesbuf[256];
    change_file_ext(argv[0],"mixplay",".bin",load_name);
    if (file_exist_check(load_name)) {
	load_file = load_name;
    }
    while (--argc) {
	switch(**++argv) {
	case '-': case '/':
	    switch(*++*argv) {
	    case '?':
		usage(NULL);
		break;
	    case 'D': case 'd':
		debug_flag = debug_flag ? FALSE : TRUE;
		break;
	    case 'B': case 'b':
		if (*++*argv == '\0') {
		    if (!--argc) {
			sprintf(mesbuf,"オプション(-%c)の記述が誤っています",
					*--*argv);
			usage(mesbuf);
		    }
		    argv++;
		}
		load_file = *argv;
		break;
	    default:
		sprintf(mesbuf,"オプション(-%c)は誤りです",**argv);
		usage(mesbuf);
		break;
	    }
	    break;
	default:
	    add_file_list(*argv);
	    break;
	}
    }
    if (!file_list_top) usage(NULL);
    if (!file_exist_check(load_file)) {
	sprintf(mesbuf,"ファイル(%s)が見つかりません",load_file);
	error(mesbuf);
    }
}

/* メインプログラム
 *
 * 入力：
 * int		    argc;  コマンドラインの引数の個数
 * char		    *argv[]コマンドラインの引数リスト
 *
 * 出力：
 * int		    0      正常終了した際の DOS への復帰終了コード
 *		    0 以外 異常終了した際の DOS への復帰終了コード
 */
int main(int argc,char *argv[])
{
    eml_status = EM_OK;
    title();				/* タイトル表示 */
    arg_check(argc,argv);		/* パラメータのチェック */
    tgfx_init();			/* エミュレータの初期化 */
    load_exec();			/* PC-FXGAのロードと実行 */
    cdrom_eml();			/* CD-ROM のエミュレーション */
    pio_reset();			/* PC-FXGAをリセット */
    pio_close();			/* PIOインターフェース終了 */
    free_file_list();			/* ファイルリストの開放 */
    switch (eml_status) {		/* 終了原因を表示 */
    case EM_OK:
	printf("終了\n");
	break;
    case EM_TO:
	printf("転送が間に合いません\n");
	break;
    }
    return(0);
}
